home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Czech Logic, Card & Gambling Games
/
Logické hry.iso
/
hry
/
Fish Fillets
/
script
/
experiments
/
code.lua
next >
Wrap
Text File
|
2005-07-16
|
44KB
|
1,212 lines
file_include("script/"..codename.."/prog_pld.lua")
-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
initModels()
sound_playMusic("music/rybky05.ogg")
local pokus = getRestartCount()
local tubes = {}
for i = 0, 15 do
tubes[i] = getModelsTable()[zkum.index + i]
end
-- -------------------------------------------------------------
local function prog_init_room()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
room.uvod = 0
if pokus > 15 then
room.uvod = random(2)
end
room.pokusy = 0
room.bojidole = 0
room.nerus = math.floor(pokus / 2)
room.hnerus = 0
if random(10) < pokus then
room.zij = 1
else
room.zij = 0
end
room.kdy = random(1000 * pokus)
room.kdy2 = random(2000 * pokus)
if random(20) < pokus then
room.pldicim = 1
else
room.pldicim = 0
end
room.pldiciv = 0
room.kouk = 0
room.fuja = -42
room.ruk = 0
room.zku = 0
room.nep = 0
room.vic = 0
room.mrt = 0
if math.mod(pokus, 3) > 0 then
room.nedobre = 0
else
room.nedobre = 1
end
room.jej = 0
room.kolem = 0
return function()
if no_dialog() and isReady(small) and isReady(big) then
if room.uvod == 0 then
room.uvod = 1
addm(random(42) + 14, "bank-m-labolator"..(1 + random(3)))
if pokus > random(5) and random(4) == 1 then
room.pokusy = 1
addv(10, "bank-v-pokusy"..(1 + random(2)))
end
end
if room.bojidole == 0 and small.Y > 26 and small.X < 20 then
room.bojidole = 1
addm(10, "bank-m-bojim")
if random(3) ~= 1 then
addm(10, "bank-m-ocicka")
end
if random(3) ~= 1 then
addv(15, "bank-v-pomoc")
end
end
if game_getCycles() == room.kdy2 then
if random(5) < 3 then
addm(20, "bank-m-prohlednout")
addv(22, "bank-v-vypad"..(1 + random(2)))
else
addm(20, "bank-m-tvorove")
end
end
if room.pldicim == 0 and small.X > 27 and small.Y < 17 then
addm(8, "bank-m-nesetkala")
room.pldicim = 1
end
if room.pldiciv == 0 and big.X > 27 and big.Y < 17 then
addv(25, "bank-v-mnozeni")
room.pldiciv = 1
end
if room.kouk == 0 and small.Y > 26 and small.X + 1 <= oka.X then
room.kouk = 1
addm(2, "bank-m-kouka")
end
if room.fuja + 50 < game_getCycles() then
if lahvac.rozbit == 10 and dist(small, lahvac) < 4 or oka.dir ~= dir_no and dist(small, oka) < 4 then
addm(5, "bank-m-fuj")
room.fuja = game_getCycles()
end
end
if room.ruk == 0 and ruka.cinnost == 2 then
room.ruk = 1
addm(12, "bank-m-nervozni")
end
if room.zku == 0 then
pom2 = 0
for key, tube in pairs(tubes) do
if dist(small, tube) < 2 then
pom2 = 1
end
end
if pom2 == 1 then
room.zku = 1
addm(7, "bank-m-zkumavka")
end
end
if room.kolem == 0 and no_dialog() and room.kouk + room.zku + room.ruk + room.pldicim + room.pldiciv + room.bojidole + room.jej + room.zij + room.uvod + room.pokusy + room.nep + room.mrt + room.nedobre > 7 then
room.kolem = 1
addm(42, "bank-m-hlavakolem")
end
if room.nep == 0 and big.X == 40 and big.Y > 13 then
room.nep = 1
addv(4, "bank-v-neproplavu"..(1 + random(2)))
end
if room.vic < 2 and math.mod(game_getCycles(), 8) == 1 then
pom2 = 0
for key, model in pairs(getModelsTable()) do
if model.Y < 21 and model.Y > 17 and model.X > 14 and model.X < 29 then
pom2 = pom2 + 1
end
end
if room.vic == 0 and pom2 == 5 then
addv(5, "bank-v-nahazet")
room.vic = room.vic + 1
end
if room.vic == 1 and pom2 == 7 then
addv(5, "bank-v-jeste")
room.vic = room.vic + 1
end
end
if room.mrt == 0 and dist(small, kostra) < 3 then
room.mrt = 1
if random(3) ~= 1 then
addm(1, "bank-m-mrtvolka")
end
switch(random(5)){
[1] = function()
addm(9, "bank-m-prehnal1")
end,
[2] = function()
addm(9, "bank-m-prehnal1")
end,
[3] = function()
addm(9, "bank-m-prehnal2")
end,
[4] = function()
addm(9, "bank-m-prehnal2")
end,
}
end
if room.nedobre == 0 and lahvac.dir ~= dir_no then
room.nedobre = 1
addv(10, "bank-v-flaska")
end
if lahvac.afaze == 25 then
if random(2) == 1 then
addm(5, "bank-m-rozbila")
end
end
if room.jej == 0 and (dolni1.zije == -4 and dist(dolni1, small) < 11 or dolni2.zije == -4 and dist(dolni2, small) < 11) then
room.jej = 1
addm(5, "bank-m-jejda")
end
if room.pokusy == 0 and (big.X > 32 or big.Y > 17) then
room.pokusy = 1
if random(3) ~= 1 then
addv(10, "bank-v-pokusy"..(1 + random(2)))
room.hnerus = 1
end
end
if room.zij == 0 and game_getCycles() > math.floor((10000 - room.kdy - room.kdy2) / 16) then
room.zij = 1
addv(random(50), "bank-v-zije")
room.hnerus = 1
end
if game_getCycles() == room.kdy then
if random(3) == 1 then
addv(20, "bank-v-potvory")
if random(3) == 1 then
room.hnerus = 1
end
else
addm(20, "bank-m-organismy")
end
end
end
if room.hnerus == 1 then
if random(5) + room.nerus < 4 then
room.nerus = room.nerus + 1
addm(10, "bank-m-nerus")
end
end
room.hnerus = 0
if game_getCycles() > room.kdy then
room.kdy = room.kdy + 1000 + random(10000)
end
if game_getCycles() > room.kdy2 then
room.kdy2 = room.kdy2 + 1000 + random(10000)
end
if math.mod(game_getCycles(), 800) == 777 then
switch(random(10)){
[1] = function()
room.ruk = 0
end,
[2] = function()
room.kouk = 0
end,
[3] = function()
room.mrt = 0
end,
[4] = function()
room.nedobre = 0
end,
[5] = function()
room.jej = 0
end,
[6] = function()
room.kolem = 0
end,
[7] = function()
room.nerus = 0
end,
[8] = function()
room.pokusy = 0
end,
[9] = function()
room.zij = 0
end,
[0] = function()
room.bojidole = 0
end,
}
end
end
end
-- -------------------------------------------------------------
local function prog_init_klicka()
return function()
klicka.afaze = math.mod(game_getCycles(), 2)
klicka:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_zataras()
return function()
if zataras.dir ~= dir_no then
room.nep = 1
end
end
end
-- -------------------------------------------------------------
local function prog_init_horni1()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
horni1.oci = 0
return function()
horni1.poloha = 0
if dolni1.zije > 0 then
if xdist(horni1, dolni1) == 0 then
horni1.poloha = 3
elseif horni1.Y == dolni1.Y then
local diffdist = xdist(horni1, dolni1)
if 1 <= diffdist and diffdist <= 3 then
horni1.poloha = 1
elseif -3 <= diffdist and diffdist <= -1 then
horni1.poloha = 2
end
end
end
if math.mod(game_getCycles(), 3) == 0 and random(100) < 40 then
horni1.oci = random(5)
end
if random(100) < 2 then
horni1.afaze = 5
elseif horni1.poloha > 0 then
horni1.afaze = horni1.poloha
else
horni1.afaze = horni1.oci
end
horni1:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_dolni1()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dolni1.oci = 0
dolni1.zije = -99
return function()
if horni1.X ~= dolni1.X and dolni1.zije == -99 then
dolni1.zije = -7
end
if dolni1.zije == -99 then
elseif dolni1.zije <= 0 then
dolni1.zije = dolni1.zije + 1
dolni1.afaze = 1
else
if math.mod(game_getCycles(), 3) == 0 and random(100) < 40 then
dolni1.oci = random(4) + 2
end
pom1 = horni1.poloha
if random(100) < 2 then
dolni1.afaze = 1
elseif pom1 > 0 then
if pom1 == 3 then
dolni1.afaze = 3
else
dolni1.afaze = 3 + pom1
end
else
dolni1.afaze = dolni1.oci
end
end
dolni1:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_zkum()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
for key, tube in pairs(tubes) do
tube.glob = random(100) + 10
tube.afaze = 0
if random(2) == 0 then
tube.glob = -tube.glob
end
end
return function()
for key, tube in pairs(tubes) do
if tube.glob > 0 then
tube.glob = tube.glob - 1
if tube.glob == 0 then
tube.glob = -random(100) - 10
end
if odd(game_getCycles() + key) then
if random(2) > 0 then
tube.afaze = math.mod(tube.afaze + 1, 3)
else
tube.afaze = math.mod(tube.afaze + 2, 3)
end
end
else
tube.glob = tube.glob + 1
if tube.glob == 0 then
tube.glob = random(100) + 10
end
tube.afaze = 0
end
tube:updateAnim()
end
end
end
-- -------------------------------------------------------------
local function prog_init_horni2()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
horni2.oci = 0
return function()
horni2.poloha = 0
if dolni2.zije > 0 then
if xdist(horni2, dolni2) == 0 then
horni2.poloha = 3
elseif horni2.Y == dolni2.Y then
local diffdist = xdist(horni2, dolni2)
if 1 <= diffdist and diffdist <= 3 then
horni2.poloha = 1
elseif -3 <= diffdist and diffdist <= -1 then
horni2.poloha = 2
end
end
end
if math.mod(game_getCycles(), 3) == 0 and random(100) < 40 then
horni2.oci = random(5)
end
if random(100) < 2 then
horni2.afaze = 5
elseif horni2.poloha > 0 then
horni2.afaze = horni2.poloha
else
horni2.afaze = horni2.oci
end
horni2:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_dolni2()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dolni2.oci = 0
dolni2.zije = -99
return function()
if horni2.X ~= X and dolni2.zije == -99 then
dolni2.zije = -7
end
if dolni2.zije == -99 then
elseif dolni2.zije <= 0 then
dolni2.zije = dolni2.zije + 1
dolni2.afaze = 1
else
if math.mod(game_getCycles(), 3) == 0 and random(100) < 40 then
dolni2.oci = random(4) + 2
end
pom1 = horni2.poloha
if random(100) < 2 then
dolni2.afaze = 1
elseif pom1 > 0 then
if pom1 == 3 then
dolni2.afaze = 3
else
dolni2.afaze = 3 + pom1
end
else
dolni2.afaze = dolni2.oci
end
end
dolni2:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_kostra()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
kostra.citac = random(200) + 200
return function()
if kostra.afaze < 8 then
if kostra.citac == 0 then
kostra.afaze = kostra.afaze + 1
kostra.citac = random(200) + 200
else
kostra.citac = kostra.citac - 1
end
end
kostra:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_oko()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
oko.cinnost = 0
return function()
local cinnost_table = {
[0] = function()
if random(100) < 10 then
local rand8 = random(8)
switch(rand8){
[3] = function()
oko.citac = random(3) + 2
oko.cinnost = 2
oko.faze = random(2) * 2
end,
[7] = function()
oko.citac = random(10) + 2
oko.cinnost = 5
end,
default = function()
if 0 <= rand8 and rand8 <= 2 then
oko.citac = random(5) + 5
oko.cinnost = 1
oko.faze = random(2) * 2
elseif 4 <= rand8 and rand8 <= 6 then
oko.citac = random(12) + 12
oko.cinnost = 3 + random(2)
end
end,
}
end
end,
[1] = function()
switch(oko.faze){
[0] = function()
if oko.cinnost == 1 then
oko.afaze = 1
else
oko.afaze = 3
end
if random(100) < 20 then
oko.faze = oko.faze + 1
end
end,
[1] = function()
oko.afaze = 0
oko.faze = oko.faze + 1
end,
[2] = function()
if oko.cinnost == 1 then
oko.afaze = 2
else
oko.afaze = 4
end
if random(100) < 20 then
oko.faze = oko.faze + 1
end
end,
[3] = function()
oko.afaze = 0
oko.citac = oko.citac - 1
if oko.citac == 0 then
oko.cinnost = 0
else
oko.faze = 0
end
end,
}
end,
[3] = function()
switch(oko.cinnost){
[3] = function()
switch(oko.afaze){
[0] = function()
oko.afaze = random(4) + 1
end,
[1] = function()
oko.afaze = 3
end,
[2] = function()
oko.afaze = 4
end,
[3] = function()
oko.afaze = 2
end,
[4] = function()
oko.afaze = 1
end,
}
end,
[4] = function()
switch(oko.afaze){
[0] = function()
oko.afaze = random(4) + 1
end,
[1] = function()
oko.afaze = 4
end,
[2] = function()
oko.afaze = 3
end,
[3] = function()
oko.afaze = 1
end,
[4] = function()
oko.afaze = 2
end,
}
end,
[5] = function()
if random(100) < 40 then
oko.afaze = random(5)
end
end,
}
oko.citac = oko.citac - 1
if oko.citac == 0 then
oko.cinnost = 0
oko.afaze = 0
end
end,
}
cinnost_table[2] = cinnost_table[1]
cinnost_table[4] = cinnost_table[3]
cinnost_table[5] = cinnost_table[3]
switch(oko.cinnost)(cinnost_table)
oko:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_qldik1()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
qldik1.afaze = 5
qldik1.zije = 0
qldik1.oci = 0
return function()
if qldik1.dir ~= dir_no then
qldik1.zije = 1
end
if math.mod(game_getCycles(), 3) == 0 then
if qldik1.zije > 0 then
if random(100) < 20 then
qldik1.oci = random(5)
end
if random(100) < 4 then
qldik1.afaze = 5
else
qldik1.afaze = qldik1.oci
end
end
end
qldik1:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_qldik2()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
qldik2.afaze = 5
qldik2.zije = 0
qldik2.oci = 0
return function()
if qldik2.dir ~= dir_no then
qldik2.zije = 1
end
if math.mod(game_getCycles(), 3) == 0 then
if qldik2.zije > 0 then
if random(100) < 20 then
qldik2.oci = random(5)
end
if random(100) < 4 then
qldik2.afaze = 5
else
qldik2.afaze = qldik2.oci
end
end
end
qldik2:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_qldik3()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
qldik3.oci = 0
qldik3.skace = 0
return function()
if math.mod(game_getCycles(), 2) == 0 then
if qldik3.skace == 0 then
if random(100) < 1 then
qldik3.skace = random(7) * 2 + 3
end
if random(100) < 4 then
qldik3.afaze = 5
else
if random(100) < 30 then
qldik3.oci = random(5)
end
qldik3.afaze = qldik3.oci
end
else
if odd(qldik3.skace) then
qldik3.afaze = 6
else
qldik3.afaze = 7
end
qldik3.skace = qldik3.skace - 1
end
end
qldik3:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_lahvac()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
lahvac.rozbit = 0
lahvac.vnitrek = random(4)
lahvac.stav = 0
lahvac.smer = random(2)
lahvac.pada = 0
return function()
switch(lahvac.rozbit){
[0] = function()
if math.mod(game_getCycles(), 4) == 0 then
switch(random(4)){
[0] = function()
lahvac.vnitrek = math.mod(lahvac.vnitrek + 1, 4)
end,
[1] = function()
lahvac.vnitrek = math.mod(lahvac.vnitrek + 3, 4)
end,
}
end
switch(lahvac.stav){
[0] = function()
if random(100) < 5 then
lahvac.stav = 10 + random(2) * 10
lahvac.smer = 1 - lahvac.smer
lahvac.afaze = 0
elseif random(100) < 7 then
lahvac.stav = 1 + random(2)
lahvac.afaze = 7 + lahvac.stav * 4 + math.mod(lahvac.vnitrek, 2)
else
lahvac.afaze = lahvac.vnitrek
end
end,
[3] = function()
if random(100) < 7 then
lahvac.stav = 2
lahvac.afaze = 15 + math.mod(lahvac.vnitrek, 2)
elseif random(100) < 7 then
lahvac.stav = 4
lahvac.afaze = 22 + math.mod(lahvac.vnitrek, 2)
elseif math.mod(lahvac.vnitrek, 2) == 1 and random(100) < 10 then
lahvac.afaze = 19
else
lahvac.afaze = 20 + math.mod(lahvac.vnitrek, 2)
end
end,
[4] = function()
if random(100) < 7 then
lahvac.stav = 3
lahvac.afaze = 20 + math.mod(lahvac.vnitrek, 2)
end
end,
default = function()
if 1 <= lahvac.stav and lahvac.stav <= 2 then
if random(100) < 7 then
lahvac.afaze = 7 + lahvac.stav * 4 + math.mod(lahvac.vnitrek, 2)
lahvac.stav = 0
elseif random(100) < 7 and lahvac.stav == 2 then
lahvac.stav = 3
lahvac.afaze = 19
else
lahvac.afaze = 9 + 4 * lahvac.stav + math.mod(lahvac.vnitrek, 2)
if random(100) < 5 then
lahvac.afaze = lahvac.afaze - 2
end
end
elseif 10 <= lahvac.stav and lahvac.stav <= 15 then
if lahvac.smer == 0 then
lahvac.afaze = lahvac.stav - 5
else
lahvac.afaze = 25 - lahvac.stav - 5
end
if lahvac.stav == 15 then
lahvac.stav = 0
else
lahvac.stav = lahvac.stav + 1
end
elseif 20 <= lahvac.stav and lahvac.stav <= 25 then
if math.mod(game_getCycles(), 3) == 0 then
if lahvac.smer == 0 then
lahvac.afaze = lahvac.stav - 15
else
lahvac.afaze = 45 - lahvac.stav - 15
end
if lahvac.stav == 25 then
lahvac.stav = 0
else
lahvac.stav = lahvac.stav + 1
end
end
end
end,
}
if lahvac.dir == dir_down then
lahvac.pada = 1
elseif lahvac.pada == 1 then
lahvac.rozbit = 1
end
end,
[5] = function()
lahvac.stav = random(30) + 30
lahvac.rozbit = lahvac.rozbit + 1
end,
[6] = function()
if lahvac.stav == 0 or lahvac.dir == dir_left or lahvac.dir == dir_right then
lahvac.rozbit = lahvac.rozbit + 1
lahvac.stav = 0
else
lahvac.stav = lahvac.stav - 1
end
end,
[7] = function()
if lahvac.dir ~= dir_no then
lahvac.stav = random(10) + 10
lahvac.rozbit = 10
lahvac.afaze = 31 + random(3)
else
switch(lahvac.stav){
[0] = function()
if random(100) < 7 then
lahvac.stav = 1 + random(2)
if lahvac.stav == 1 then
lahvac.afaze = 28
else
lahvac.afaze = 30
end
else
lahvac.afaze = 27
end
end,
[1] = function()
if random(100) < 7 then
lahvac.stav = 0
lahvac.afaze = 28
elseif random(100) < 5 then
lahvac.afaze = 28
else
lahvac.afaze = 29
end
end,
[2] = function()
if random(100) < 7 then
lahvac.stav = 0
end
end,
}
end
end,
[10] = function()
if lahvac.stav == 0 then
lahvac.stav = random(10) + 10
lahvac.rozbit = 6
lahvac.afaze = 27
else
if odd(game_getCycles()) then
if random(2) == 0 then
lahvac.afaze = math.mod(lahvac.afaze - 30, 3) + 31
else
lahvac.afaze = math.mod(lahvac.afaze - 29, 3) + 31
end
end
lahvac.stav = lahvac.stav - 1
end
end,
default = function()
if 1 <= lahvac.rozbit and lahvac.rozbit <= 4 then
lahvac.afaze = 23 + lahvac.rozbit
lahvac.rozbit = lahvac.rozbit + 1
end
end,
}
lahvac:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_oka()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
oka.impuls = 0
oka.kuk = 0
oka.smer = 4
local smallActive = true
return function()
if oka.dir ~= dir_no then
if oka.impuls == 0 then
oka.faze = 0
end
oka.impuls = 4
end
if oka.impuls > 0 then
if oka.faze < oka.impuls then
oka.afaze = 7 + oka.faze
else
oka.afaze = 15 - 2 * oka.impuls + oka.faze
end
oka.faze = oka.faze + 1
if oka.faze == 2 * oka.impuls then
oka.faze = 0
oka.impuls = oka.impuls - 1
end
elseif oka.kuk > 0 then
oka.afaze = 1
oka.kuk = oka.kuk - 1
oka.smer = 4
else
if big.dir ~= dir_no or not small:isAlive() then
smallActive = false
elseif small.dir ~= dir_no or not big:isAlive() then
smallActive = true
end
if smallActive then
pom1 = xdist(small, oka)
pom2 = ydist(small, oka)
else
pom1 = xdist(big, oka)
pom2 = ydist(big, oka)
end
if small:isAlive() or big:isAlive() then
if pom1 < 0 then
if math.abs(pom1) >= 2 * math.abs(pom2) then
oka.novysmer = 6
elseif math.abs(pom2) >= 2 * math.abs(pom1) then
oka.novysmer = 4
else
oka.novysmer = 5
end
else
if math.abs(pom1) >= 2 * math.abs(pom2) then
oka.novysmer = 2
elseif math.abs(pom2) >= 2 * math.abs(pom1) then
oka.novysmer = 4
else
oka.novysmer = 3
end
end
end
if oka.smer == -1 then
oka.smer = oka.novysmer
elseif oka.smer < oka.novysmer then
oka.smer = oka.smer + 1
elseif oka.smer > oka.novysmer then
oka.smer = oka.smer - 1
end
oka.afaze = oka.smer
if random(200) < 1 then
oka.kuk = random(4) + 4
end
end
oka:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_malej()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
malej.houpe = 0
malej.oci = 0
return function()
if math.mod(game_getCycles(), 3) == 0 then
if random(100) < 10 then
malej.oci = random(5)
end
end
if malej.dir ~= dir_no and malej.houpe == 0 then
malej.faze = 0
malej.houpe = 1
end
switch(malej.houpe){
[0] = function()
if random(100) < 2 then
malej.afaze = 4
else
malej.afaze = malej.oci
end
end,
[1] = function()
malej.faze = malej.faze + 1
switch(malej.faze){
[1] = function()
malej.afaze = 5
end,
[4] = function()
malej.afaze = 6
end,
[6] = function()
if malej.dir == dir_no then
malej.houpe = 0
malej.oci = 0
else
malej.faze = 0
end
end,
}
end,
}
malej:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_ruka()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
ruka.cinnost = 0
ruka.smer = 0
ruka.faze = 0
return function()
if odd(game_getCycles()) then
pomb1 = xdist(ruka, small) == 0 and ydist(ruka, small) > 0 and ydist(ruka, small) < 10
pomb2 = xdist(ruka, big) == 0 and ydist(ruka, big) > 0 and ydist(ruka, big) < 10
if pomb1 and pomb2 then
if small.Y > big.Y then
pomb2 = false
end
end
if pomb1 or pomb2 then
if ruka.cinnost ~= 2 then
ruka.faze = 0
end
ruka.cinnost = 2
if pomb1 then
if small:isLeft() then
ruka.smer = 0
else
ruka.smer = 1
end
elseif big:isLeft() then
ruka.smer = 0
else
ruka.smer = 1
end
elseif ruka.cinnost == 2 then
ruka.cinnost = 0
ruka.faze = 0
end
switch(ruka.cinnost){
[0] = function()
if random(100) < 2 then
ruka.cinnost = 1
ruka.afaze = 0
ruka.faze = (random(3) + 2) * 2
else
if random(100) < 3 then
ruka.smer = 1 - ruka.smer
end
if ruka.smer == 0 then
ruka.faze = math.mod(ruka.faze + 1, 7)
else
ruka.faze = math.mod(ruka.faze + 6, 7)
end
ruka.afaze = ruka.faze
end
end,
[1] = function()
ruka.faze = ruka.faze - 1
if odd(ruka.faze) then
ruka.afaze = 7
else
ruka.afaze = 0
end
if ruka.faze == 0 then
ruka.cinnost = 0
end
end,
[2] = function()
ruka.faze = 1 - ruka.faze
ruka.afaze = 8 + ruka.faze + ruka.smer * 2
end,
}
end
ruka:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_pldicek()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
pldicek.pocet = 0
initPldici(pldicek)
return function()
progPldici(pldicek)
end
end
-- -------------------------------------------------------------
local function prog_init_mutant()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
return function()
if odd(game_getCycles()) then
if dvere1.dir == dir_no and dvere2.dir == dir_no then
if 0 <= mutant.afaze and mutant.afaze <= 4 then
local rand20 = random(20)
if rand20 == 0 then
mutant.afaze = 5
elseif 1 <= rand20 and rand20 <= 3 then
mutant.afaze = random(5)
end
elseif 5 == mutant.afaze or mutant.afaze == 9 then
if random(4) == 2 then
mutant.afaze = 5 + random(5)
else
local rand20 = random(20)
if 0 <= rand20 and rand20 <= 1 then
mutant.afaze = random(5)
elseif 2 <= rand20 and rand20 <= 7 then
mutant.afaze = 6 + random(3)
end
end
end
else
mutant.afaze = 9
end
end
mutant:updateAnim()
end
end
-- --------------------
local update_table = {}
local subinit
subinit = prog_init_room()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_klicka()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_zataras()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_horni1()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dolni1()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_zkum()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_horni2()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dolni2()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_kostra()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_oko()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_qldik1()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_qldik2()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_qldik3()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_lahvac()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_oka()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_malej()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_ruka()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_pldicek()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_mutant()
if subinit then
table.insert(update_table, subinit)
end
return update_table
end
local update_table = prog_init()
-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
for key, subupdate in pairs(update_table) do
subupdate()
end
end